/*
 * @(#)UserAddDaoImpl.java 创建于 2014年3月14日 
 * 
 * Copyright (c) 2013-2014 by Drow.  
 *
 */
package com.hangxin.basic.dao.impl;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.hangxin.basic.dao.UserDao;
import com.hangxin.basic.mapping.LoginInfoRowMapper;
import com.hangxin.basic.model.LoginInfo;
import com.hangxin.commons.dao.impl.BasicDaoImpl;
import com.hangxin.commons.util.PageModel;

/**
 * 
 * 类名称：UserAddDaoImpl.java
 * <P/>
 * 类描述： 添加登录用户Dao接口实现类
 * <P/>
 * 创建时间：2014年3月14日
 * <P/>
 * 创建人： 段志杨
 * <P/>
 * 联系方式：315874529@qq.com
 * <P/>
 * 修改人：无
 * <P/>
 * 修改时间：无
 * <P/>
 * 修改备注：无
 * <P/>
 * 版本：v1.0
 * 
 */
@Repository
public class UserDaoImpl extends BasicDaoImpl implements UserDao
{
	/**
	 * 
	 * 功能描述：添加登录用户dao接口实现方法
	 * <P/>
	 * 创建时间：2014年3月17日
	 * <P/>
	 * 创建人：  段志杨  
	 * <P/>
	 * 联系方式：  315874529@qq.com
	 * 
	 * @return
	 */
	@Override
	public boolean userAdd(Object[] params)
	{
		String sql="insert into logininfo(username,realname,pass,state,companyid,applicant) values(?,?,?,?,?,?)";
		if(this.save(sql, params)>0){
			return true;
		}
		return false;
	}
	/**
	 * 
	 * 功能描述：用户信息管理模块，获取所有登录用户信息dao接口实现方法
	 * <P/>
	 * 创建时间：2014年3月17日
	 * <P/>
	 * 创建人：  段志杨  
	 * <P/>
	 * 联系方式：  315874529@qq.com
	 * 
	 * 
	 * @return
	 */
	@Override
	public PageModel getAllUser(PageModel pageModel,Object[] paramscount,Object[] params)
	{
		String sqlcount="select count(*) from logininfo where  username like ? and realname like ? and state =?";
		String  sql="select l.*,io.realname as rm ,c.companyname, xn.dictname from logininfo l left join company c on l.companyid= c.id left join logininfo io on io.id=l.applicant left join (SELECT a2.LOGINID, group_concat(A1.DICTNAME) AS dictname FROM logininfo gk, DICTINFO a1, LOGINROLE a2 WHERE A2.LOGINID = GK.ID AND A2.ROLEID = A1. ID GROUP BY A2.LOGINID) xn on xn.loginid=l.id   where  l.username like ? and l.realname like ? and l.state =? order by addtime desc limit ?,? ";
		return this.listByObject(sqlcount, sql, pageModel, paramscount, params);
	}
	
	/**
	 * 
	 * 功能描述：添加登录用户时验证用户名是否已经存在
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人：  段志杨  
	 * <P/>
	 * 联系方式：  315874529@qq.com
	 * 
	 * @param pageModel
	 * @param params
	 * @return
	 */
	@Override
	public int  checkName(Object[] params) 
	{
		String sql="select count(*) from logininfo where username=?";
		return this.findByCount(sql, params);
	}
	/**
	 * 
	 * 功能描述：禁用登录用户
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	@Override
	public Integer userFor(Object[] params){
		String sql="update logininfo set state=?   where  id=?";
		Integer flag=0;
		try
		{
			if(this.update(sql, params)>0){
				flag=1;
			}
			
		} catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		return flag;
	}
	/**
	 * 
	 * 功能描述：根据id查找登录用户
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public Map<String,Object> findUser(Object[] params){
		String sql="select l.*,c.companyname from logininfo l left join company c on c.id=l.companyid where l.id=?";
		return this.findByMap(sql, params);
	}
	/**
	 * 
	 * 功能描述：根据登录名查找登录用户
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public LoginInfo findUserByName(Object[] params){
		String sql="select * from logininfo where username=?";
		return this.find(sql, params, new LoginInfoRowMapper());
	}
	/**
	 * 
	 * 功能描述：修改登录用户
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public void editUser(Object[] params)
	{
		String sql="update logininfo set realname=?,companyid=?,state=? where id=? ";
		this.update(sql, params);
	}
	/**
	 * 
	 * 功能描述：重置密码
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public Integer setPass(Object[] params)
	{
		String sql="update logininfo set pass=? where id=? ";
		return this.update(sql, params);
	}
	/**
	 * 
	 * 功能描述：修改密码
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public Integer setUserPass(Object[] params)
	{
		String sql="update logininfo set pass=? where id=? ";
		return this.update(sql, params);
	}
	/**
	 * 
	 * 功能描述：添加登录用户角色dao接口实现方法
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public void addUserRole(Object[] params)
	{
		String sql="insert into loginrole(loginid,roleid) values(?,?)";
		this.save(sql, params);
	}
	/**
	 * 
	 * 功能描述：根据登录用户id获取对应角色
	 * <P/>
	 * 创建时间：2014年3月19日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public PageModel<Map<String, Object>> getUserRole(PageModel pageModel,Object[] params)
	{
		String sqlcount="select count(*) from loginrole";
		String sql="select * from loginrole l where l.loginid=?";
		return this.listByObject(sqlcount, sql, pageModel, null, params);
	}
	/**
	 * 
	 * 功能描述：判断roleid是否存在
	 * <P/>
	 * 创建时间：2014年3月24日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public Integer delRid(Object[] params)
	{
		String sql = "delete  from loginrole  where  loginid=?";
		
		return this.delete(sql, params);
	}
	/**
	 * 
	 * 功能描述：根据用户id 查找crm员工信息
	 * <P/>
	 * 创建时间：2014年3月24日
	 * <P/>
	 * 创建人： 段志杨 
	 * <P/>
	 * 联系方式： 315874529@qq.com
	 * 
	 * @param id
	 * @return
	 */
	public Map<String, Object> findEmployee(Object[] params)
	{
		String sql = "select * from sys_employee where employee_id=(select employeeid from logininfo where id=?)";
		
		return this.findByMap(sql, params);
	}

	
}
